/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.easoftware.code.dao;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.EJB;
import javax.inject.Named;
import net.easoftware.code.beans.QueryParameter;
import net.easoftware.code.beans.facade.TasaCambioFc;
import net.easoftware.code.beans.facade.UnidadNegocio;
import net.easoftware.code.error.EaError;
import net.easoftware.code.util.Tools;

/**
 *
 * @author eliu
 */
@Named
public class TasasCambioDao implements Serializable {

    @EJB
    PersistenceEjb ejb;

    /**
     *
     * @param unidadNegocio
     * @param mes
     * @param anio
     * @return
     * @throws EaError
     */
    public TasaCambioFc getTasaByMesAnioAndUN(Integer unidadNegocio, Integer mes, Integer anio) throws EaError {
        List<net.easoftware.code.beans.jpa.TasaCambio> r = (List<net.easoftware.code.beans.jpa.TasaCambio>) ejb.doNamedQuery("TasaCambio.findUnidadNegocio", new QueryParameter[]{
                    new QueryParameter("idun", unidadNegocio),
                    new QueryParameter("mes", mes),
                    new QueryParameter("anio", anio)}, PersistenceEjb.LIST);
        if (r == null || r.isEmpty()) {
            return null;
        }
        return (TasaCambioFc) Tools.cloneObject(r.get(0), TasaCambioFc.class);
    }

    /**
     *
     * @return @throws EaError
     */
    public List<TasaCambioFc> getAllTasas() throws EaError {
        List<net.easoftware.code.beans.jpa.TasaCambio> r = (List<net.easoftware.code.beans.jpa.TasaCambio>) ejb.doNamedQuery("TasaCambio.findAll", new QueryParameter[]{}, PersistenceEjb.LIST);
        if (r == null || r.isEmpty()) {
            return null;
        }

        List<TasaCambioFc> nRs = new LinkedList<>();
        for (net.easoftware.code.beans.jpa.TasaCambio ln : r) {
            TasaCambioFc re = (TasaCambioFc) Tools.cloneObject(ln, TasaCambioFc.class);
            re.setUnidadNegocio((UnidadNegocio) Tools.cloneObject(ln.getUnidadnegocio(), UnidadNegocio.class));
            nRs.add(re);
        }
        return nRs;
    }
}
